1 using UnityEngine;
2 using
System.Collections.Generic;
3
4 namespace
MapScreen
5 {
6
7     
public class Maps : MonoBehaviour
8     {
9
10         
private float touchX;
11         
private float deltaX;
12         
private float offsetX;
13         
private float rx;
14
15         
private bool isUpdate;
16         
public static bool isDragged;
17
18         
private int current;
19
20         
public List<Sprite> mapSprites;
21         
public List<Sprite> lockSprites;
22         
public GameObject[] mapObjects;
23         
public GameObject[] dots;
24
25         
void Start()
26         {
27             
int world = Data.getData(Data.KEY_WORLD_MAP);
28
29             
for (int i = 0; i < 4; i++)
30             {
31                 
if (i >= world)
32                 {
33                     mapObjects[i].GetComponent<SpriteRenderer>().sprite = lockSprites[i -
1];
34                 }
35                 
else
36                 {
37                     mapObjects[i].GetComponent<SpriteRenderer>().sprite = mapSprites[i];
38                     mapObjects[i].AddComponent<InputProcessor>();
39                     WorldMapClickListener mapClick = mapObjects[i].AddComponent<WorldMapClickListener>();
40                     mapClick.mapIndex = i;
41                 }
42             }
43
44             current = world -
1;
45             isUpdate =
true;
46             transform.localPosition =
new Vector3(-current * 8, transform.localPosition.y, transform.localPosition.z);
47
48             ARController.setBannerVisible(
true);
49         }
50
51         
void Update()
52         {
53             
if (Input.GetButtonDown("Fire1"))
54             {
55                 touchX = Input.mousePosition.x;
56                 isUpdate =
false;
57             }
58             
else if (Input.GetButton("Fire1"))
59             {
60                 deltaX = Input.mousePosition.x - touchX;
61                 transform.localPosition +=
new Vector3(deltaX / 100, transform.localPosition.y, transform.localPosition.z);
62                 touchX = Input.mousePosition.x;
63
64                 current = currentWorldMap(transform.localPosition.x);
65
66                 offsetX = -
8 * current - transform.localPosition.x;
67                 
if (Mathf.Abs(offsetX) >= 0.3f)
68                 {
69                     isDragged =
true;
70                 }
71                 UpdateDots();
72             }
73             
else if (Input.GetButtonUp("Fire1"))
74             {
75                 current = currentWorldMap(transform.localPosition.x);
76
77                 offsetX = -
8 * current - transform.localPosition.x;
78                 rx = transform.position.x + offsetX;
79
80                 isUpdate =
true;
81             }
82
83             
if (isUpdate)
84             {
85                 updateMaps();
86             }
87         }
88
89         
private void updateMaps()
90         {
91             
if (offsetX < 0)
92             {
93                 
if (transform.localPosition.x > rx)
94                 {
95                     transform.localPosition +=
new Vector3(offsetX * 2 * Time.deltaTime, transform.localPosition.y, transform.localPosition.z);
96                 }
97                 
else
98                 {
99                     transform.localPosition =
new Vector3(rx, transform.localPosition.y, transform.localPosition.z);
100                     isUpdate =
false;
101                 }
102             }
103             
else
104             {
105                 
if (transform.localPosition.x < rx)
106                 {
107                     transform.localPosition +=
new Vector3(offsetX * 2 * Time.deltaTime, transform.localPosition.y, transform.localPosition.z);
108                 }
109                 
else
110                 {
111                     transform.localPosition =
new Vector3(rx, transform.localPosition.y, transform.localPosition.z);
112                     isUpdate =
false;
113                 }
114             }
115             UpdateDots();
116         }
117
118         
private void UpdateDots()
119         {
120             
switch (current)
121             {
122                 
case 0:
123                     dots[
4].transform.localPosition = new Vector3(dots[0].transform.localPosition.x, dots[0].transform.localPosition.y, dots[4].transform.localPosition.z);
124                     
break;
125                 
case 1:
126                     dots[
4].transform.localPosition = new Vector3(dots[1].transform.localPosition.x, dots[1].transform.localPosition.y, dots[4].transform.localPosition.z);
127                     
break;
128                 
case 2:
129                     dots[
4].transform.localPosition = new Vector3(dots[2].transform.localPosition.x, dots[2].transform.localPosition.y, dots[4].transform.localPosition.z);
130                     
break;
131                 
case 3:
132                     dots[
4].transform.localPosition = new Vector3(dots[3].transform.localPosition.x, dots[3].transform.localPosition.y, dots[4].transform.localPosition.z);
133                     
break;
134             }
135         }
136
137         
private int currentWorldMap(float x)
138         {
139             
if (x >= -4)
140                 
return 0;
141             
else if (x < -4 && x >= -12)
142                 
return 1;
143             
else if (x < -12 && x >= -20)
144                 
return 2;
145             
else
146                 
return 3;
147         }
148
149         
150     }
151 }



Trò chơi đua xe động vật trong UNITY Engine 114.678 lượt xem

Gõ tìm kiếm nhanh...